home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 476-500 / disk_500 / wiconify / wiconify.doc < prev    next >
Text File  |  1992-05-06  |  81KB  |  1,644 lines

  1. OVERVIEW:
  2.  
  3. wIconify is an Intuition enhancement program that allows you to "iconify" any
  4. Intuition window on any screen.  Iconified windows become small icons on at
  5. the bottom of the screen, and they can be opened again by double-clicking
  6. them, and operate in a fashion similar to Workbench icons.  Smart-refresh
  7. windows can be turned into simple-refresh windows during iconification in
  8. order to save memory.  wIconify also allows entire screens to be iconified,
  9. though no memory savings occurs by doing this.
  10.  
  11. Past versions of wIconify only allowed windows on the Workbench screen to be
  12. iconified, but the current version works for windows on ANY screen. 
  13. wIconify also includes features that allow you to turn any screen into "a
  14. workbench screen"; that is, windows that normally open on the Workbench
  15. screen can be redirected to open on any screen whatever.  Furthermore,
  16. wIconify allows you to open new screens easily for just this purpose.
  17.  
  18. When used with its companion utility, wIconSetter, wIconify allows you to
  19. customize the icon imagery for specific windows so that your favorite
  20. programs can have distinctive icons.  wIconSetter provides a number of
  21. methods of producing icon imagery, including converting Workbench .info
  22. files to wIconSetter icons.
  23.  
  24. Finally, wIconify provides a programmer's interface that includes all the
  25. procedures necessary to create and manipulate icons from within a user-
  26. written program.  Several examples are provided, including an icon clock
  27. with hands that change as time passes.
  28.  
  29.  
  30. INSTALLING AND REMOVING WICONIFY:
  31.  
  32. To install wIconify, place the WICONIFY command in youre C: directory (or in
  33. your current command PATH), and WICONIFY-HANDLER in the L: directory. 
  34. Alternatively, create a directory named wIconify on you system disk, place
  35. WICONIFY and WICONIFY-HANDLER in that directory, and use the PATH ADD command
  36. to include this directory in your command path (see the CLI documentation
  37. for information on the command path).
  38.  
  39. Now use the ASSIGN command to assign the name WICONIFY: to the directory
  40. where you put the WICONIFY command (usually C: or the wIconify directory).
  41. You probably want to include this command in the startup-sequence found in
  42. the S: directory (see the Workbench 1.3 or 2.0 documentation for information
  43. on the startup-sequence file).
  44.  
  45. To start wIconify, simply issue the command
  46.  
  47.     1> wIconify [initfile]
  48.  
  49. where 'initfile' is the name of an optional initialization file that can be
  50. used to customize wIconify (see CUSTOMIZING WICONIFY below).  If no file is
  51. specified, wIconify will look for WICONIFY:wIconify.init or S:wIconify.init
  52. as the initialization file.
  53.  
  54. You will probably want to add the WICONIFY command to your startup-sequence. 
  55. If so, you should be aware that its position in your startup-sequence may be
  56. important to the correct operation of wIconify (see WICONIFY AND THE STARTUP
  57. SEQUENCE and INTERACTION WITH OTHER PROGRAMS below for more information).
  58.  
  59. There is no need to RUN wIconify, as wIconify will create a new process for
  60. the wIconify-Handler automatically.
  61.  
  62. To stop wIconify once it is running, simply issue the wIconify command
  63. again, or use the END menu item of wIconify's ICON menu.  There are some
  64. important subtlties involved with ending wIconify which you should
  65. understand; see ENDING WICONIFY below for details.
  66.  
  67.  
  68. WICONIFYING WINDOWS:
  69.  
  70. Once wIconify is running, you should be able to iconify any window on any
  71. screen.  To do so, select the window you want to iconify by clicking the
  72. left button, and, while holding down the left mouse button, press and release
  73. the right mouse button.  This is called a "left-right" click.  It may feel a
  74. little awkward at first, but it will become natural very quickly.  Note that
  75. this operation is similar to the extended menu selection process already
  76. defined by Intuition in which you select multiple menu items by clicking the
  77. left button while you have a menu open with the right button (this is called
  78. a right-left click).  The button or key-stroke that iconifies a window can be
  79. customized using the wIconify.init file (see CUSTOMIZING WICONIFY below).
  80.  
  81. When you left-right click in a window, it will disappear and be replaced
  82. by a small icon in the lower-left of the screen on which the window was
  83. open.  Note that the program controlling the window is still running, and
  84. can update the window even while it is iconified.  Also note that
  85. SMART_REFRESH windows will take up MORE memory when they are iconified than
  86. when they are visible.  This can be altered (for a price); see WICONIFY AND
  87. SMART_REFRESH WINDOWS below.
  88.  
  89. The icon will have the same name as the window title so that you can
  90. identify the window belonging to each icon.  To restore a window from its
  91. iconified form, click on the window's icon and select the OPEN item from the
  92. ICON menu, or simply double-click on the icon you want to open.  The window
  93. will be restored and its icon removed.
  94.  
  95. By default, all window icons use the same imagery.  This image can be
  96. customized using the initialization file (see CUSTOMIZING WICONIFY below). 
  97. If you use the companion program, wIconSetter, you can use custom icons for
  98. individual windows.  wIconSetter is easy to use, and makes wIconify much more
  99. visually appealing; its use is strongly recommended.  See the wIconSetter
  100. documentation for more information.
  101.  
  102. Window icons can be manipulated in a fashion very similar to that of Workbench
  103. icons:  you select one by clicking on it; you select (or unselect)
  104. additional icons by clicking them while holding down the SHIFT key; you
  105. can drag them from one location to another on screen; finally, you can open
  106. icons by double-clicking them.
  107.  
  108. In addition to these operations, the ICON menu includes items that allow
  109. you to OPEN iconified windows (restore their windows and remove the icons),
  110. CLOSE icons (close the windows associated with the icons), LOCK and UNLOCK
  111. icons (prevent them from being moved from their current locations), CLEAN UP
  112. the icons ("snap" them to the grid), ORGANIZE the icons (move them all down
  113. to the bottom of the screen again), and OPEN ALL icons.  See the WICONIFY
  114. MENUS section below for more details.
  115.  
  116. Normally, when you open an icon, its last position on screen is retained so
  117. that when you iconify the window again, its icon will appear where it was
  118. before, unless some other icon already is occupying that spot.  Thus you can
  119. move an icon to a selected location and expect it to stay there without
  120. having to use the LOCK command.
  121.  
  122. Note that programs that use the wIconify programmer's interface may specify
  123. that their icons are locked, or that they can not be closed, or that they do
  124. not save their last positions, or that their windows can NOT be iconified, so
  125. some icons may not respond as the default window icons do.
  126.  
  127.  
  128. ICONIFYING SCREENS:
  129.  
  130. In addition to being able to iconify windows, wIconify gives you the ability
  131. to iconify entire screens, that is, the screen itself will disappear and
  132. will be replaced by an icon on the Workbench screen.  To do so, simply left-
  133. right click in the wIconify backdrop window on the screen you want to
  134. iconify (that is, attempt to iconify the wIconify window).  The programs using
  135. the screen will still be running, and will be able to continue to use and
  136. update the windows on that screen, but they no longer will be visible.
  137.  
  138. To get the screen back, double-click on the screen's icon on the Workbench
  139. screen.  The screen should reappear.  By default, screen icons have a
  140. different image from window icons, so it should be easy to distinguish them
  141. on the Workbench.  You can customize the screen icon using the
  142. intitialization file (see CUSTOMIZING WICONIFY below).
  143.  
  144. Screen icons can be manipulated just like any other icon; see ICONIFYING
  145. WINDOWS for more details on icons and their properties.  Since screen icons
  146. only appear on the Workbench screen, it is not possible to iconify the
  147. Workbench screen itself.
  148.  
  149. The memory in use by a screen is still in use when that screen is iconified,
  150. so there is no memory saved by iconifying a screen.  It is simply a method
  151. of organizing your work area better.
  152.  
  153.  
  154. ICON LAYOUT:
  155.  
  156. When windows or screens are iconified, their icons appear at the bottom of
  157. the screen starting at the lower left-hand corner.  As new icons appear,
  158. they are placed to the right.  This makes it easy to shrink the size of a
  159. window slightly, if necessary, to get access to the icons (or you could just
  160. iconify the window that's in the way).  Alternate columns of icons are
  161. staggered (slightly lower) so that long names do not over-write one-another.
  162.  
  163. Once an icon appears on the screen, you can, of course, drag the icon to a
  164. new location.  Under usual conditions, the icon will retain this position
  165. after it is opened and re-iconified, so you should be able to place an icon
  166. where you want it to be, and expect it to stay there.
  167.  
  168. Icons will not be placed on top of other icons (unless you drag them their
  169. yourself, or unless they are LOCKED), so the screen layout should be
  170. realtively easy to view.  If it becomes messy, however, there are two menu
  171. items that can help.
  172.  
  173. The CLEANUP item of the ICON menu will cause all selected icons to be 
  174. "snapped" to the icon grid.  That is, they move to the closest (unused) grid
  175. position to their current location.  If no icons are selected, then all the
  176. icons on the screen will be cleaned up.  Icons with the LOCKED or NOORGANIZE
  177. flag set will be unaffected by the CLEANUP command, however.
  178.  
  179. The ORGANIZE item of the ICON menu will cause all icons to "fall" to the
  180. bottom of the screen; that is, any icons that have been moved away from the
  181. bottom will be put back along the bottom.  This puts all icons into their 
  182. "natural" positions on the screen.  As before, and icons marked as LOCKED
  183. or with the NOORGANIZE flag set are not affected by ORGANIZE.
  184.  
  185. Currently, there is no method for customizing the initial positions of
  186. icons, but a future enhancement may provide the ability to specify that
  187. icons should form along the right-hand edge, for example.
  188.  
  189.  
  190. WICONIFY AND SMART_REFRESH WINDOWS:
  191.  
  192. When a window is covered by another window, and then becomes uncovered, the
  193. portion of the window that was obscured must be refreshed to redisplay the
  194. information that it contained.  Intuition provides windows with a number of
  195. refresh methods, the most common being SMART_REFRESH and SIMPLE_REFRESH. 
  196. The first of these is the easiest and fastest to use, but the most memory-
  197. intensive:  when a part of the window is covered, Intuition copies the
  198. obscured portion to an off-screen memory area and when the window is
  199. uncovered again, Intuition restores the contents of the window automatically
  200. from the saved data.  The program that owns the window never even knows that
  201. the window was partially covered.  The restoration of uncovered windows is
  202. very fast, but if large portions of large windows become covered, this can
  203. use up a lot of CHIP memory.
  204.  
  205. The second refresh method (SIMPLE_REFRESH) takes up no additional memory,
  206. but requires special programming to implement.  In this case, when a portion
  207. of window is covered then uncovered, Intuition informs the program that part
  208. of its window must be restored, and then the program is required to redraw
  209. the information into the window itself.  This usually takes longer,
  210. depending on the amount of data to be restored, but has the advantage of
  211. requiring no additional memory regardless of the size of a window or the
  212. amount of it that is covered.  There are many situiations when this is an
  213. appropriate refresh method; for example, if a window contains only text (no
  214. graphics), as in a terminal communications program, it takes far less space
  215. to store the contents of the window as ASCII text than as a bit-mapped image.
  216.  
  217. In a nutshell, SMART_REFRESH windows save in program complexity but require
  218. more memory when covered, while SIMPLE_REFRESH windows require more
  219. programming, but no additional memory.  Most programs use SMART_REFRESH
  220. windows because they are less complicated and operate faster; for example,
  221. the CLI windows are SMART_REFRESH even though they usually include only
  222. textual data.
  223.  
  224. wIconify iconifies a window by pushing it behind its own backdrop window,
  225. thus covering up the window completely.  For SIMPLE_REFRESH windows, this is
  226. no problem, but this forces SMART_REFRESH windows to take up the maximum
  227. amount of memory (the entire window is copied to memory off-screen).  For
  228. example, a full-sized CLI window, when iconified, will take up the same
  229. amount of memory as the screen itself.  The effect of this is that
  230. SMART_REFRESH windows typically use up MORE memory when iconified than when
  231. displayed.  This is unfortunate, but practically unavoidable.
  232.  
  233. Under certain circumstances, however, this behavior can be changed. 
  234. wIconify provides a method by which you can specify that SMART_REFRESH
  235. windows should be treated as SIMPLE_REFRESH windows when they are
  236. iconified:  if you hold down the left ALT key (called the change-refresh key)
  237. when you iconify the window, wIconify will convert the refresh type of the
  238. window to SIMPLE_REFRESH while it is iconified (it will be restored to
  239. SMART_REFRESH when it is opened again).  This means you may save memory
  240. when you iconify the window.  (The change-refresh key can be changed using
  241. the initialization file; see CUSTOMIZING WICONIFY below).
  242.  
  243. Unfortunately, there is a catch.  Since the data in SIMPLE_REFRESH windows
  244. is lost when they are covered (the program itself must refresh it), and
  245. since programs that use SMART_REFRESH windows do not expect to have to
  246. refresh their windows, when you restore a window that has been changed to a
  247. SIMPLE_REFESH window, its contents will have been lost.  Intuition will
  248. redraw the border and usually its gadgets (drag bar, depth gadgets, etc.),
  249. but any other data in the window will be lost.  In particular, it may be
  250. impossible to tell where buttons or other "active areas" of the window are
  251. located!  This may be OK for CLI windows, where the data in the window can
  252. be lost without harm, but it may be devastating for programs that have no
  253. other copy of the data except for what's in the window itself (art programs,
  254. for example).
  255.  
  256. The moral is, use the change-refresh key with care.  It can be a big help
  257. when you need to save memory, but it can lose information with no hope of
  258. recovery!
  259.  
  260.  
  261. WICONIFY AND THE WORKBENCH WINDOW:
  262.  
  263. In version 1.3 and earlier versions of the Workbench, the Workbench program
  264. used a backdrop window on the Workbench screen in order to display and
  265. maintain the Workbench icons.  For this reason, past versions of wIconify
  266. "hooked into" this workbench window in order to place additional icons on
  267. the screen.  This may have looked good, but was somewhat unreliable in
  268. practice, and took considerable and complicated coding to accomplish.
  269.  
  270. In version 2.0 of the Workbench software, it appears that the Workbench
  271. program will use a standard (non-backdrop) window with drag bar, sizing
  272. gadgets, and other standard Intuition accoutrements.  It seems
  273. inappropriate, then, for wIconify to continue to hook into this window, so
  274. the current version of wIconify opens its own backdrop window instead.
  275.  
  276. This is fine for version 2.0, but what about those of us who still use
  277. version 1.3, where the workbench still has its own backdrop window?  The
  278. Workbench backdrop window will cover up the wIconify window so that it is
  279. very inconvenient to get at the window icons.  The solution is actually very
  280. simple:  wIconify converts the Workbench backdrop window into a non-backdrop
  281. window and adds the standard gadgets.  Take care, however, since this means
  282. that the Workbench window will be smaller.  Although the Workbench will not
  283. move icons outside the visible area of the window itself, you can move them
  284. there yourself by shrinking the size of the window.  There is no way to get
  285. to these icons without enlarging the window again.
  286.  
  287. In order to take advantage of this feature of wIconify, you must start
  288. wIconify BEFORE loading the Workbench; that is, the wIconify command must
  289. come before the LoadWB command in your startup sequence.  wIconify will not
  290. modify the Workbench window if it is already open.
  291.  
  292.  
  293. WICONIFY AND PROGRAM SCREENS
  294.  
  295. Whenever a new screen opens, wIconify attempts to create a backdrop window
  296. on that screen.  This is were the icons for that screen will be displayed
  297. when windows become iconified.  It also provides you with the wIconify menu
  298. bar on each screen (when the backdrop window is the active one).
  299.  
  300. The backdrop window may provide a number of complications, however.  Some
  301. programs open their own backdrop windows (art programs for example) which
  302. usually are as large as the screen itself.  Such windows will completely
  303. obscure the wIconify backdrop window, making it impossible to see the icons
  304. or even activate the wIconify window to get at its menu bar.
  305.  
  306. The best solution is to iconify the backdrop window that is in the way. 
  307. This will give you ready access to the wIconify backrop window.  If the
  308. window is a smart-refresh window, however, this may be inappropriate since
  309. it would take up a lot of memory when iconified.
  310.  
  311. Another solution is to press the "activation key" which tells wIconify to
  312. activate its backdrop window on the current screen.  Usually, this is the
  313. F1 function key with SHIFT held down, but it can be changed using the
  314. initialization file (see CUSTOMIZING WICONIFY below).  This at least gives
  315. you access to the wIconify menus, although you still will not be able to see
  316. the wIconify backdrop window.
  317.  
  318. The pressence of additional backdrop windows (i.e., the wIconify backdrop
  319. window) may cause trouble for some programs.  For example, a program that
  320. draws directly into the screen's RastPort rather than into its own backdrop
  321. window as the Intuition guide suggests, will draw right over top of the
  322. icons provided by wIconify.  More severe difficulties also are possible;
  323. some badly-behaved programs may even crash the system due to the presence of
  324. the wIconify backdrop window.
  325.  
  326. In this case, you will want to tell wIconify NOT to open a backdrop window
  327. on these screens.  You can do so through the IGNORE_SCREEN command in the
  328. wIconify initialization file (see CUSTOMIZING WICONIFY below for details).
  329. Any screens specified by an IGNORE_SCREEN command will be ignored by
  330. wIconify.  That is, wIconify will not open a backdrop window on it.  Of
  331. course, this also means that you will not be able to iconify any windows on
  332. that screen either, nor will you be able to iconify the screen itself;
  333. wIconify will not re-route workbench windows to this screen, or affect it in
  334. any way.
  335.  
  336. If for any reason wIconify fails to be able to open a backdrop window on a
  337. newly created screen (for example, there is not enough memory), then
  338. wIconify will treat the screen as an ignored screen as described above.
  339.  
  340.  
  341. SCREEN MANAGEMENT WITH WICONIFY:
  342.  
  343. In addition to its ability to iconify windows and screens, wIconify
  344. a provides number of screen-management functions, as described below:
  345.  
  346. Some programs (particulary older software) do not provide access to their
  347. screen's depth gadgets, which makes it very inconvenient to have more than
  348. one screen open while they are running.  wIconify provides SCREEN TO_FRONT
  349. and SCREEN TO_BACK menu items which can be used to depth arrange any screen
  350. with a wIconify backdrop window.
  351.  
  352. The ICONIFY menu item in the SCREEN menu causes the current screen to become
  353. iconified.  This is useful on screens where you do not have easy access to the
  354. wIconify backdrop window (in order to left-right click it).
  355.  
  356. wIconify gives you the ability to toggle the title bar on or off on any
  357. screen (wIconify error messages appear here, but some screens don't have
  358. their screen title bars showing).
  359.  
  360. More importantly, however, wIconify gives you the ability to turn any screen
  361. into a Workbench screen, that is, a screen that can be shared by windows
  362. from many different programs.  Normally, a window that does not specify a
  363. custom screen will be opened on the Workbench screen.  wIconify lets you
  364. redirect these windows to any screen.  There are a number of features that
  365. control this aspect of wIconify.
  366.  
  367. First, the OPEN_WINDOWS submenu of the SCREEN menu controls the screen on
  368. which workbench windows will be opened.  There are three choices:
  369.  
  370.     ACTIVE_SCREEN       Open windows on the currently active screen
  371.  
  372.     CURRENT_WB          Open windows on the screen currently marked as
  373.                         the Workbench screen via the MAKE_WB menu item
  374.  
  375.     REAL_WB             Open windows on the real Workbench screen
  376.  
  377. The first of these is the default; new windows will appear on whichever
  378. screen you are using.  Sometimes this is not the most convenient method,
  379. however, particularly if you must give a command on another screen in order
  380. to open the window you want to appear on the current screen.
  381.  
  382. In this case, the second option might be more appropriate.  Using this method,
  383. you can mark a screen as the one you want to use, then select some other
  384. screen to give one or more commands that usually open windows on the
  385. Workbench screen; all these windows will open on the screen you have marked
  386. as the WB screen via the MAKE_WB menu item.  This is particularly convenient
  387. if you are using wIconify as part of your startup sequence and you want
  388. windows to be moved to other screens as your machine is booting (see WICONIFY
  389. AND THE STARTUP-SEQUENCE below).  The WB_TO_FRONT menu item will bring the
  390. current WB screen to the front of the display.  If you select MAKE_WB, the
  391. screen becomes the current WB screen, and CURRENT_WB mode is selected
  392. automatically.
  393.  
  394. Finally, if you do not want wIconify to change the screens where windows are
  395. opened, select the third option above.
  396.  
  397. Note that only those windows that don't request a specific screen are
  398. effected by the OPEN_WINDOWS settings; all windows that usually open on a
  399. custom screen will still open there regardless of the setting of OPEN_WINDOWS.
  400.  
  401. The OPEN_WINDOWS submenu also includes a SIZE_TO_FIT option.  Since some
  402. screens are not as large as the Workbench screen, some windows that usually
  403. open on the Workbench screen might not be able to open on the active
  404. screen.  For this reason, wIconify may resize a window in order to make it
  405. fit on the screen.  When a window would not fit on the specified screen,
  406. wIconify first looks to see if the window has a drag bar; if it does, then
  407. wIconify tries to move the window so that it will fit on the screen.  If
  408. not, or if the window is still too big, wIconify checks to see if the window
  409. has a sizing gadget (or if it accepts NEWSIZE messages).  If so, wIconify
  410. will change the size of the window to fit on the screen, and will send a
  411. NEWSIZE message to the altered window.  If none of the above conditions
  412. hold, wIconify will attempt to open the window unaltered.
  413.  
  414. Some badly-behaved programs, however, use the failure of an OpenWindow()
  415. call to determine whether the Workbench screen is interlaced or not by
  416. attempting to open a very tall window.  In this case, wIconify may "fix" the
  417. window to fit, and the program will incorrectly believe that the screen is
  418. interlaced when it may not be, and will overestimate the amount of space
  419. available to it.  Under such circumstances, you may wish to turn off the
  420. SIZE_TO_FIT menu.  If you do, wIconify will never attempt to alter the size
  421. of a window when it is opening.  This may cause some windows to fail to
  422. open, particularly on small screens.
  423.  
  424. You can customize the initial settings of the OPEN_WINDOWS submenu using the
  425. wIconify initialization file (see CUSTOMIZING WICONIFY below).
  426.  
  427. One of the reasons that Intuition usually does not allow programs to share a
  428. screen is that one program could close the screen while the other was still
  429. using it, which would cause a system crash.  wIconify overcomes this problem
  430. by keeping track of the windows that it has opened on other screens; a
  431. screen will not be allowed to close until all "foreign" windows have been
  432. closed first.  Thus it is completely safe to use wIconify to open windows on
  433. other screens.
  434.  
  435.  
  436. SCREENS CREATED BY WICONIFY:
  437.  
  438. Since wIconify allows you to turn any screen into a Workbench screen (as
  439. described in SCREEN MANAGEMENT WITH WICONIFY above), it is convenient to
  440. have a method of creating screens expressly for this purpose.  wIconify
  441. provides this in the form of the NEW_SCREEN submenu of the SCREEN menu,
  442. which lets you choose the depth and resolution of the screen to be created.
  443.  
  444. To create a new screen, choose the resolution options you want (HIRES, LORES,
  445. INTERLACE, HAM), and then select the depth.  When you choose a depth item,
  446. wIconify opens the new screen with the given specifications.  The resolution
  447. items are updated to the values for the current screen whenever the active
  448. screen changes, so it is most convenient to create a new screen from one
  449. that is already of the resolution you want.
  450.  
  451. The actual width and height of the new screen are calculated from the width
  452. and height of the current screen (doubling or halving as necessary to
  453. accommodate the resolution requested).  The depth, of course, is up to you,
  454. except for HAM mode screens, which always are 6 bitplanes deep (select any
  455. depth for HAM screens; wIconify will substitute 6 automatically).
  456.  
  457. The colors for the new screen are the Intuition default colors, unless you
  458. specify a new color map using the initialization file (see CUSTOMIZING
  459. WICONIFY below).
  460.  
  461. Once the screen is created, it becomes the current WB screen automatically 
  462. (although the OPEN_WINDOWS option is not changed, so if ACTIVE_SCREEN is
  463. selected the current WB will have no effect).  The new screen is activated
  464. and ready to be used.  You can open as many wIconify screens as you have
  465. memory for.  wIconify screens can be very useful for keeping your Workbench
  466. less cluttered.
  467.  
  468. If you want to close a wIconify screen, use the CLOSE_SCREEN item of the
  469. SCREEN menu.  It will be available only on wIconify-created screens, and
  470. only when the screen has no windows or icons open on it.
  471.  
  472. All the menu items (except screen depths) have visible command-key equivalents. 
  473. The depths have command-key equivalents as well, but they are not visible. 
  474. The right-Amiga key together with a number from 1 to 5 (either on the keypad
  475. or the main keyboard) is equivalent to selecting one of the depths in the
  476. submenu.
  477.  
  478.  
  479. NEWCLI'S CREATED BY WICONIFY:
  480.  
  481. Another useful feature of wIconify is its ability to create new CLI
  482. processes at will.  The NEW_CLI item of the SCREEN menu causes wIconify to
  483. attempt to start a new CLI process on the screen where the command was
  484. given.  The default command used by wIconify is NEWSHELL, but you can
  485. customize this in the initialization file (see CUSTOMIZING WICONIFY below).
  486. In fact, you can give a separate command for HIRES screens and LORES
  487. screens, in case you need to specify window sizes in the command.
  488.  
  489. When you select NEW_CLI, the active screen becomes the current WB screen,
  490. but the setting of the OPEN_WINDOWS menu does not change.
  491.  
  492. wIconify uses the AmigaDOS Execute() routine to perform the NEW_CLI
  493. command.  The Execute() routine requires that you have the RUN command
  494. available in your C: directory (it does not look through the command path,
  495. but looks in C: directly), so if you get a system requester for your startup
  496. disk, that's probably why.
  497.  
  498. There are a number of important aspects of the newly created process that
  499. you should be aware of when you use the NEW_CLI menu.  First, due to the way
  500. the wIconify process is set up initially, the newly-created process does not
  501. inherit a command path.  Second, despite the best efforts of the author, it
  502. does not inherit a current directory, either.  The current directory turns
  503. out to be NULL, which is supposed to mean the root of the initial startup
  504. disk.  Unfortunately, this does not always seem to operate correctly.  It is
  505. a wise precaution to perform a CD command even if you want to use the root of
  506. the startup disk.  Third, the newly-created process's system-error screen is
  507. by default the (real) Workbench screen.  Fourth, the command stack size of the
  508. new precess is not inherited; you will have to set this yourself if necessary. 
  509. Finally, the newly-created process has input and output redirected to NIL:. 
  510.  
  511. There are a number of methods you can use to overcome these problems.  For
  512. the first two problems, you can explicitely state the path to the command
  513. (or use an ASSIGNED path if you want to be able to change it).  For the
  514. third problems, wIconify provides a separate utility program called
  515. wSetSysRequest that set the screen for the system error messages to the
  516. currently active screen.  You should create a file that contains the
  517. wSetSysReqest command on one line then the command you want executed on the
  518. next.  Finally, have NEW_CLI perform an EXECUTE command specifying the file
  519. you just created as the file to perform.  You any also want to include a
  520. PATH and CD command in the file.  For the fourth problem, you need to add
  521. a STACK command to the file that you EXECUTE.  Finally, for that last
  522. problem, simply include command redirection on the command you want to
  523. perform so that it opens a CON: or NEWCON: window itself.
  524.  
  525. If you want the NEW_CLI menu to perform a NEWCLI or NEWSHELL command, there
  526. is a particularly easy way to do this.  Create a file in your S: directory
  527. called 'wIconify-CLI-Startup' that includes the CD, PATH, wSetSysRequest,
  528. and STACK commands described above.  Then, use the initialization file to
  529. specify the NEW_CLI command to be NEWCLI FROM S:WICONIFY-CLI-STARTUP or
  530. NEWSHELL FROM S:WICONIFY-CLI-STARTUP according to your preference of CLIs.
  531. This will cause the NEW_CLI command to open a new CLI that already has the
  532. proper CD, PATH, etc. set up.  You may also want to include the command
  533. EXECUTE S:CLI-STARTUP or EXECUTE S:SHELL-STARTUP if you want the new CLI to
  534. perform the startup commands you usually use (see the AmigaDOS manual for
  535. more information on the CLI, Shell, and startup files).
  536.  
  537.  
  538. THE WICONIFY MENUS:
  539.  
  540. Every wIconify window has two main menus, the ICON menu and the SCREEN
  541. menu.  These are described below:
  542.  
  543. The ICON menu includes the items that manipulate icons:
  544.  
  545.     OPEN        Opens all selected icons (restores their windows and
  546.                 removes the icons from the screen)
  547.  
  548.     CLOSE       Attempts to close the windows associated with the selected
  549.                 icons.  This option is only available to windows that have
  550.                 Intuition close gadgets.
  551.  
  552.     LOCK        Marks the selected icons as locked; that is, wIconify will
  553.                 not allow them to be moved by dragging, and they will be
  554.                 unaffected by the CLEANUP and ORGANIZE menus.
  555.  
  556.     UNLOCK      Unlocks the selected items; i.e., allows them to be moved again.
  557.  
  558.     CLEAN UP    Moves the selected icons to the closest "grid" positions.
  559.                 If no icons are selected, all (unlocked) icons are cleaned up.
  560.  
  561.     ORGANIZE    Moves all (unlocked) icons to the bottom of the screen.
  562.  
  563.     OPEN ALL    Opens all icons on the screen (without your having to select
  564.                 them all).
  565.  
  566.     ABOUT       Displays a short message detailing the program name, author
  567.                 and copyright notice.  This display appears in the screen's
  568.                 title bar area.
  569.  
  570.     END         Attempts to end wIconify.  This requires the RUN command in
  571.                 the C: directory, and access to the wIconify command in the
  572.                 WICONIFY: directory.  wIconify will not end until all
  573.                 "foreign" windows are removed from custom screens, all
  574.                 icons created by the programmer's interface are closed, and
  575.                 all wIconify screens are removed.  See ENDING WICONIFY below
  576.                 for more details.
  577.  
  578. The SCREEN menu contains commands to manipulate screens:
  579.  
  580.     TO FRONT        Brings the selected screen to the front.
  581.  
  582.     TO BACK         Sends the selected screen to the back.
  583.  
  584.     WB TO FRONT     Brings the current WB (as defined by the MAKE WB menu)
  585.                     to the front.
  586.  
  587.     TOGGLE TITLE    Hides/shows the screen's title/menu bar.
  588.  
  589.     ICONIFY         Iconifies the selected screen; the screen will disappear
  590.                     and be replaced by an icon on the Workbench screen.
  591.  
  592.     NEW CLI         Attempts to open a new CLI window on the current screen,
  593.                     and makes the screen the current WB screen.  This requires
  594.                     the RUN command in the C: directory.  The actual command
  595.                     executed is set by the initialization file, and is the
  596.                     NEWSHELL command by default.  See NEWCLI'S CREATED BY
  597.                     WICONIFY above for more details.
  598.  
  599.     MAKE WB         Marks the selected screen as the current WB screen, and
  600.                     selects the CURRENT WB item in the OPEN WINDOWS menu.
  601.                     wIconify will open windows on this screen that would
  602.                     normally be opened on the Workbench screen.
  603.  
  604.     OPEN WINDOWS    Specifies where and how windows will open that normally
  605.                     would be directed to the Workbench screen.
  606.  
  607.         ACTIVE SCREEN   Windows open on the current active screen.
  608.  
  609.         CURRENT WB      Windows open on the screen marked as the current WB
  610.                         screen by the MAKE WB menu.
  611.  
  612.         REAL WB         Windows open on the (real) Workbench screen as usual.
  613.  
  614.         SIZE TO FIT     Windows that are too big for the screen where they
  615.                         will open will be resized to fit on the screen.
  616.  
  617.     NEW SCREEN      Allows you to open new screens for use as WB screens.
  618.  
  619.         1  2  3  4  5   Specifies the depth of the screen to open.  The
  620.                         screen is opened as soon as the depth is selected.
  621.                         The command-key equivalents are right-Amiga plus the
  622.                         depth (either on the keypad or main keyboard).
  623.  
  624.         HIRES           Sets the horizontal resolution to HIRES (usually
  625.                         640 pixels across).
  626.  
  627.         LORES           Sets the horizontal resolution to LORES (usually
  628.                         320 pixels across).
  629.  
  630.         INTERLACE       Sets the vertical resolution to Interlaced
  631.                         (usually 400 pixels down) or Non-Interlaced
  632.                         (usually 200 pixels down).
  633.  
  634.         HAM             Set the special HAM (Hold-And-Modify) mode.  This is
  635.                         not available in HIRES INTERLACE mode, but in all
  636.                         others.  Any depth will be converted to 6 bit planes
  637.                         automatically.
  638.  
  639.     CLOSE SCREEN    Attempts to close a wIconify-created screen.  This is only
  640.                     allowed when all the windows and icons are removed from
  641.                     the screen.
  642.                     
  643. The menu command-key equivalents can be customized via the initialization
  644. file; see CUSTOMIZING WICONIFY below.
  645.  
  646.  
  647. CUSTOMIZING WICONIFY:
  648.  
  649. Many parts of wIconify can be customized, including the icon imagery, the
  650. button or key-stroke that iconifies a window, the menu command-key
  651. equivalents, and many other features.  To change any of the defaults, you
  652. must supply a wIconify initialization file, which you can specify on the
  653. command line when you start wIconify.  For example:
  654.  
  655.     1> wIconify wIconify.init
  656.  
  657. If you do not specify a file, wIconify will look for WICONIFY:wIconify.init
  658. and if it is not found, it will look for S:wIconify.init.  If neither is
  659. found, it will use the default values for everything.
  660.  
  661. The wIconify.init file is a text file that you can create or edit using any
  662. text editor, such as ED, EDIT, or Emacs.  A sample initialization file,
  663. Sample.init, is provided as part of this distribution.
  664.  
  665. The initialization file should contain a series of commands that specify
  666. what defaults you want to change.  Each command keyword must be followed
  667. by a colon (':'), and you should have only one command per line.  Some
  668. commands can take up more than one line.  Blank lines are ignored, in
  669. general, although a blank line will end a multi-line command.
  670.  
  671. You can include comments in your initialization file in two ways.  First,
  672. the semi-colon (';') is a comment character, which means that everything on
  673. the line past the semi-colon will be ignored.  This is the same as for the
  674. CLI.  The Sample.Init file has numerous examples of the use of the semi-colon
  675. as a comment.
  676.  
  677. The second type of comment is not line-oriented; instead, it is delimited
  678. by a comment initiator and a comment terminator.  These are '/*' and '*/',
  679. respectively.  They are the same as the comment characters in the C
  680. programming language.  You can nest comments within comments, as in the
  681. following example:
  682.  
  683.     /* This is a comment /* inside */ another comment */
  684.  
  685. Be careful that you pair these together properly, or you may find that your
  686. whole initialization file becomes a comment!
  687.  
  688.  
  689. The commands allowed within the initialization file are the following:
  690.  
  691.  
  692. Format:
  693.  
  694.     ICONIFY_KEY: qualifiers keyname
  695.  
  696. This specifies the key or button press that causes windows to become
  697. iconified.  The default is the left-right click.  Qualifiers can be separated
  698. by spaces, pluses (+), or bars (|), and the keyname should be separated from
  699. the qualifiers by a space.  If a qualifier name is preceded by a dash (-) this
  700. specifies a "disqualifier", that is, the specified qualifier must NOT be
  701. pressed when the key is pressed; such qualifiers prevent the key-press from
  702. iconifying windows.
  703.  
  704. The qualifiers must be chosen from the following list:
  705.  
  706.     LSHIFT          The left SHIFT key
  707.     RSHIFT          The right SHIFT key
  708.     CAPSLOCK        The Caps Lock key
  709.     CONTROL         The CTRL key
  710.     LALT            The left Alt key
  711.     RALT            The right Alt key
  712.     LCOMMAND        The left Amiga key
  713.     RCOMMAND        The right Amiga key
  714.     LAMIGA          The left Amiga key (same as LCOMMAND)
  715.     RAMIGA          The right Amiga key (same as RCOMMAND)
  716.     NUMERICPAD      The key is on the numeric keypad
  717.     LBUTTON         The left mouse button
  718.     RBUTTON         The right mouse button
  719.     MBUTTON         The middle mouse button (future expansion)
  720.  
  721. The keyname must be one of the following:
  722.  
  723.     LBUTTONPRESS    The left button
  724.     RBUTTONPRESS    The right button
  725.     F1              The F1 key
  726.     ...
  727.     F10             The F10 key
  728.     ESC             The ESCape key
  729.     ENTER           The ENTER key on the keypad
  730.     RETURN          The RETURN key
  731.     BACKSPACE       The Back Space key
  732.     DELETE          The DEL key
  733.     HELP            The HELP key
  734.     TAB             The TAB key
  735.     SPACE           The space bar
  736.     \nn             The key with keycode 'nn' where 'nn' is a HEX value;
  737.                     for example, \4C is the up-arrow key.
  738.                     (see the ROM Kernel Manual for a list of keycodes)
  739.  
  740. Examples:
  741.  
  742.     ICONIFY_KEY:  LBUTTON RBUTTONPRESS      ; this is the default
  743.     ICONIFY_KEY:  LSHIFT F2                 ; F2 with LSHIFT held down
  744.     ICONIFY_KEY:  LSHIFT-RSHIFT ENTER       ; ENTER with LSHIFT but not RSHIFT
  745.     ICONIFY_KEY:  LSHIFT+RSHIFT ENTER       ; ENTER with LSHIFT and RSHIFT
  746.     ICONIFY_KEY:  F6                        ; F6 with no special qualifiers
  747.  
  748.  
  749. Format:
  750.  
  751.     CHANGE_REFRESH:  qualifiers
  752.  
  753. This specifies the qualifier keys that cause SMART_REFRESH windows to be
  754. converted to SIMPLE_REFRESH windows when they are iconified.  The default is
  755. LALT.  If the qualifiers specified are held down when the Iconify-Key is
  756. pressed, then the window's refresh type will be changed, otherwise it will
  757. remain unchanged when it is iconified.  The qualifiers must be chosen from
  758. the list given above, and can be separated by a space, a plus (+) or a bar (|).
  759. Disqualifiers are not allowed in the CHANGE_REFRESH specification.
  760.  
  761. Examples:
  762.  
  763.     CHANGE_REFRESH:  LALT                   ; the default
  764.     CHANGE_REFRESH:  CONTROL+LSHIFT
  765.  
  766.  
  767. Format:
  768.  
  769.     ACTIVATION_KEY:  qualifiers keyname
  770.  
  771. The specifies the key or button press that activates the wIconify backdrop
  772. window on the active screen.  By default it is LSHIFT F1.  The qualifiers,
  773. disqualifiers, and keyname are specified as in ICONIFY_KEY above.
  774.  
  775. Examples:
  776.  
  777.     ACTIVATION_KEY:  LSHIFT F1          ; the default
  778.     ACTIVATION_KEY:  LSHIFT-LALT F1     ; LSHIFT F1 when LALT is not pressed
  779.  
  780.  
  781. Format:
  782.  
  783.     COLOR_MAP:
  784.        rgb
  785.        ...
  786.  
  787. This command specifies a color map to be used for all wIconify screens
  788. created by the NEWSCREEN menu (or wIconScreen command).  The lines following
  789. the COLOR_MAP command specify RGB gun intensities for each color, color 0
  790. being the first line, color 1 being the second, etc.  The RGB values are
  791. specified as HEX digits (0-F) representing 0 to 15.  For example, F00 is
  792. bright red, FF0 is yellow, 888 is grey, etc.  You can use the Palette or
  793. Preferences tools provided with the Workbench to experiment with different
  794. color values.
  795.  
  796. There are also two special color values.  If the first character in the color
  797. specification is an equal sign (=) or an asterisk (*), this means that the
  798. color should be the default color used by Intuition (the first four colors
  799. are set by the Preferences tool, and the others are the default ugly colors).
  800.  
  801. Example:
  802.  
  803.     *       ; use the default WB background color
  804.     *       ; and the default forground color
  805.     888     ; but use grey for color 2
  806.     FFF     ; and white for color 3
  807.             ; additional colors could go here for screens with more bitplanes.
  808.  
  809.  
  810. Format:
  811.  
  812.     MENU_KEYS:
  813.       menuname  letter
  814.       menuname  letter
  815.       ...
  816.  
  817. This command specifies the menu command-key equivalences.  Here, menuname
  818. represents the name of one of the menus (e.g., OPEN, CLEAN_UP, ACTIVE_SCREEN),
  819. and the letter following it is the key to be used as the command-key
  820. equivalent; it must be a printable character.  If no letter follows the
  821. manu name, then this menu will not have a command-key equivalent.  It is not
  822. possible to change the command-key equivalents of the depth items in the
  823. NEW_SCREEN menu, but all other items can be modified.  Note that spaces in
  824. menu names are replaced by underscores.  For submenus, just the name of the 
  825. submenu itself is used as the name.
  826.  
  827. Example:
  828.  
  829.     MENU_KEYS:
  830.       OPEN          O
  831.       CLOSE         C
  832.       LOCK          #
  833.       CLEAN_UP      K
  834.       ORGANIZE      R
  835.       OPEN_ALL      P
  836.       ABOUT         ?
  837.       END
  838.  
  839.       ACTIVE_SCREEN A
  840.       CURRENT_WB    W
  841.       REAL_WB       =
  842.       SIZE_TO_FIT   S
  843.  
  844.  
  845. Format:
  846.  
  847.     DEFAULT_FLAGS:  flags
  848.  
  849. This specifies the icon flags that will be set automatically for all window
  850. icons created by wIconify.  If no flags are provided, then no special flags
  851. are applied when a new icon is formed.  The flags can be separated by spaces,
  852. plus signs (+), or vertical bars (|), and must come from the following list:
  853.  
  854.     CHANGEREFRESH   SMART_REFRESH windows will become SIMPLE_REFRESH when
  855.                     they are iconified
  856.     LOCKED          The icons will be locked
  857.     NOMOVE          The icons will not be allowed to be dragged
  858.     NOCLOSE         The CLOSE menu will be unavailable for these icons
  859.     NOORGANIZE      The ORGANIZE menu will not affect these icons
  860.     NOSAVEPOS       The window's icon will go to the bottom of the screen
  861.                     every time it is iconified
  862.     NOMULTISELECT   The icons can only be selected one at a time
  863.     NOICONIFY       The windows will not be able to be iconified again
  864.  
  865. These flags are part of the programmer's interface, and most of them do not
  866. make sense to use as the default window icon flags, except perhaps
  867. CHANGREREFRESH and perhaps NOSAVEPOS.  They are provided for completeness.
  868.  
  869. Examples:
  870.  
  871.     DEFAULT_FLAGS:                  ; default is no special flags
  872.     DEFAULT_FLAGS:  CHANGEREFRESH   ; change SMART to SIMPLE refresh
  873.     DEFAULT_FLAGS:  CHANGEREFRESH | NOSAVEPOS
  874.  
  875.  
  876. Format:
  877.  
  878.     SCREEN_FLAGS:  flags
  879.  
  880. This specifies the icon flags to be given to screen icons when they are
  881. created.  The flags are specified as for DEFAULT_FLAGS above, and must be
  882. chosen from the same list of options.  The CHANGEREFRESH flag has no effect
  883. for screen icons, however.  Screens automatically get the NOCLOSE flag.
  884.  
  885.  
  886. Format:
  887.  
  888.     IGNORE_SCREEN:
  889.         screen1
  890.         screen2
  891.         ...
  892.  
  893. This command specifies the names of screens that should be ignored by
  894. wIconify.  wIconify will not open a backdrop window on these screens,
  895. windows on these screens will not be able to be iconified, nor will wIconify
  896. route Workbench windows to these screens.  These screens are completely
  897. ignored by wIconify.
  898.  
  899. The name of a screen need not be its complete name; you only need to
  900. specify enough of the name to distinguish it from other screens.  Upper and
  901. lower case letters are not distinguished, but spacing is important.  If the
  902. screen name has leading or trailing spaces, you will need to enclose it in
  903. single quotation marks (').  If you need a single quote within the the
  904. single quotes, use two single quotes in a row ('').  A screen with no title
  905. is specified by empty quotes ('').
  906.  
  907. If you do not use quotes around the name, the entire line (minus any leading
  908. and trailing blanks) is used as the name.
  909.  
  910. Examples:
  911.  
  912.     IGNORE_SCREEN:
  913.         '  A screen with leading blanks'
  914.         ''      ; no title
  915.         A full-line title
  916.  
  917.  
  918. Format:
  919.  
  920.     HIRES_CLICOMMAND:  command-string
  921.     LORES_CLICOMMAND:  command-string
  922.  
  923. These commands specify the commands performed by the NEWCLI menu item.  The
  924. command string can be enclosed in quotation marks (as described in
  925. IGNORE_SCREEN above), or can be the rest of the line.  See NEWCLI'S CREATED
  926. BY WICONIFY for information about the current directory, etc., used by this
  927. command.  The LORES command is used whenever the NEWCLI menu is selected
  928. on a LORES screen, and the HIRES command is used otherwise.  If no LORES
  929. command is given, then the HIRES command will be used instead.  The default
  930. commands are 'NEWSHELL' for the HIRES command, and nothing for the LORES
  931. command. 
  932.  
  933. Examples:
  934.  
  935.     HIRES_CLICOMMAND:   NEWSHELL        ; the default
  936.     HIRES_CLICOMMAND:   NEWSHELL FROM S:WICONIFY-SCRIPT
  937.     HIRES_CLICOMMAND:   'EXECUTE WICONIFY:NEWCLI-COMMAND'
  938.     HIRES_CLICOMMAND:   NEWSHELL NEWCON:0/10/640/100/AmigaShell
  939.     LORES_CLICOMMAND:   NEWSHELL NEWCON:0/10/320/100/AmigaShell
  940.  
  941.  
  942. Format:
  943.  
  944.     COMMAND_STACK:  stack-size
  945.  
  946. When you select the NEWCLI menu, a separate process is created to perform
  947. the CLI command that you want executed (usually this is NEWSHELL, but you
  948. can specify another command using the HIRES_CLICOMMAND or LORES_CLICOMMAND
  949. commands described above).  In the default case, this process simply
  950. performs the NEWSHELL command (creating the new shell), then exits, but if
  951. you change the command to something else, you may want a larger stack than
  952. the default 4K.  The COMMAND_STACK command lets you specify the stack size.
  953.  
  954. Examples:
  955.  
  956.     COMMAND_STACK:  2048        ; a 2K stack
  957.     COMMAND_STACK:  10240       ; a 10K stack (a good size)
  958.  
  959.  
  960. Format:
  961.  
  962.     OPEN_ON:    screen-type
  963.  
  964. This command specifies the setting of the OPEN WINDOW submenu.  The valid
  965. screen-types are:  ACTIVE_SCREEN, CURRENT_WB, and REAL_WB.  These specify
  966. where windows will open that usually would open on the Workbench screen. 
  967. ACTIVE_SCREEN specifies that they will open on the currently active screen,
  968. CURRENT_WB indicates that they should open on the screen you selected with
  969. the MAKE_WB menu item, and REAL_WB means they should open on the Real
  970. Workbench screen (i.e., wIconify should not change where windows open). 
  971. The default is to open windows on the active screen.
  972.  
  973. Example:
  974.  
  975.     OPEN_ON:    ACTIVE_SCREEN   ;   The default
  976.  
  977.  
  978. Format:
  979.  
  980.     SIZE_TO_FIT:    TRUE-or-FALSE
  981.  
  982. This command sets the SIZE_TO_FIT item of the OPEN_WINDOWS submenu.  If you
  983. specify TRUE, wIconify will resize windows, if necessary, in order to allow
  984. them to open on screens other than the Workbench.  If you specify FALSE,
  985. wIconify will not adjust the window sizes (some attempts to open windows on
  986. small screens may fail).  The default setting is TRUE.
  987.  
  988. Examples:
  989.  
  990.     SIZE_TO_FIT:    TRUE    ; the default
  991.     SIZE_TO_FIT:    FALSE   ; the only other choice
  992.  
  993.  
  994. Format:
  995.  
  996.     DEFAULT_IMAGE:
  997.        bitmap-data
  998.        bitmap-data
  999.        ...
  1000.  
  1001. This command allows you to specify the image to be used by new icons (that
  1002. don't specify their own images).  Each of the lines that follow the
  1003. DEFAULT_IMAGE command becomes a row of the image.  Each character on the line
  1004. (past the opening blanks) represents the pen color of one pixel of the row.
  1005. For a 2 bit-plane screen, the colors range from '0' to '3'; for 3 bit-planes
  1006. they are from '0' to '7';  For 4 bit-planes, they are '0' to '9' and 'a' to
  1007. 'f' (these must be lower case letters); for 5 bit-planes, they are 0-9
  1008. and a-f for the first sixteen pen colors, and then SHIFT 0-9 and SHIFT A-F
  1009. for pens from 16 to 31.  That is, ')' is pen 16, '!' is pen 17, '@' is pen 18,
  1010. '#' is pen 19, up through '*' as pen 24 and '(' as pen 25.  Then 'A' is pen 26,
  1011. up through 'F' as pen 31.  This allows you to specify a 5-bitplane image if
  1012. you want.
  1013.  
  1014. Be careful that your images make sense in fewer bitplanes, though.  You want
  1015. to use a mix of even and odd numbers so that something will show up on one
  1016. bit-plane screens.
  1017.  
  1018. The standard size, is 41 by 18, though you can specify larger or smaller
  1019. icons if you want.  The maximum size is 78 by 32 (the size of the icon grid
  1020. spacing).  wIconify will warn you if your image exceeds this amount.
  1021.  
  1022. See the Sample.Init file for a complete example of how to specify an image.
  1023.  
  1024.  
  1025. Format:
  1026.  
  1027.     DEFAULT_SELECT:
  1028.         bitmap-data
  1029.         bitmap-data
  1030.         ...
  1031.  
  1032. This command specifies the image to be used when the icon becomes selected. 
  1033. If no DEFAULT_SELECT command is given, then the select image will be an
  1034. inverted copy of the default image.  If a select image IS given, it should
  1035. be the same width and height as the default image.  The bitmap-data has the
  1036. same form as the DEFAULT_IMAGE above.
  1037.  
  1038. See the Sample.Init file for a complete example of specifying a select image.
  1039.  
  1040.  
  1041. Format:
  1042.  
  1043.     DEFAULT_MASK:
  1044.         mask-data
  1045.         mask-data
  1046.         ....
  1047.  
  1048. This command specifies the image mask to be used with the default icon.  The
  1049. mask data has the same format as the image bitmap-data described above,
  1050. except that only pen values of 0 and 1 are allowed.  A 0 represents places
  1051. where you can "see through" the icon when it is being dragged.  
  1052.  
  1053. If a select image was given, the mask is associated with the selected image,
  1054. otherwise, the mask is associated with the image itself as well as with its
  1055. inverted select image.  The mask data must be the same size as the other two
  1056. images.
  1057.  
  1058. In addition to determining what part of the image is invisible, the mask also
  1059. is used as a "hit mask"; that is, when selecting an icon with a mask, you must
  1060. click on one of the pixels that is a 1 in the mask data.  If a select image
  1061. was specified, the mask will be used as a hit mask only when the select image
  1062. is showing, otherwise it will be used all the time.  The example in the
  1063. Sample.Init file has a mask with fairly large "holes" in it that you can
  1064. experiment with.  
  1065.  
  1066.  
  1067. Format:
  1068.  
  1069.     DEFAULT_ICON:  filename
  1070.  
  1071. It is sometimes more convenient to have the bitmap data for the default icon
  1072. stored in a separate file (for example, a file created by one of the
  1073. wIconSetter icon-creation utilities).  In this case, you can use the
  1074. DEFAULT_ICON command to specify the file that contains the icon imagery.
  1075. This file can contain three commands: ICON, SELECT, and MASK.  These have
  1076. the same format as DEFAULT_IMAGE, DEFAULT_SELECT, and DEFAULT_MASK above.
  1077. No other commands are allowed in the icon file itself.
  1078.  
  1079. Example:
  1080.  
  1081.     DEFAULT_ICON:  WICONIFY:Window.Icon
  1082.  
  1083.  
  1084. Format:
  1085.  
  1086.     SCREEN_IMAGE:
  1087.     SCREEN_SELECT:
  1088.     SCREEN_MASK:
  1089.     SCREEN_ICON:
  1090.  
  1091. These commands have the same format as the corresponding DEFAULT commands
  1092. described above, however, these ones determine the default imagery for the
  1093. screen icons, whereas the previous ones are for the default window icons.
  1094.  
  1095.  
  1096. Format:
  1097.  
  1098.     PRIORITY:   n
  1099.  
  1100. This specifies the priority for the wIconify handler process (the process
  1101. that maintains the icons and wIconify backdrop windows).  The default
  1102. priority is 0, but you may want to bump this up to 5 or so.  The trackdisk
  1103. device runs at priority 5, the DFn: file-system tasks run at priority 10,
  1104. and the Input.Device runs at priority 20.  You must specify a priority in
  1105. the range -128 to 127, though it probably is unwise to go above 10 or
  1106. below 0.
  1107.  
  1108. Examples:
  1109.  
  1110.     PRIORITY:   0       ; the default
  1111.     PRIORITY:   5       ; wIconify runs before the CLI's
  1112.  
  1113.  
  1114. Format:
  1115.  
  1116.     HANDLER_PRIORITY:  n
  1117.  
  1118. This command specifies the priority in the Input.Device input handler chain
  1119. of wIconify's input handler.  The default is 51, which puts it just in front
  1120. of Intuition (which is at priority 50).  Many utilitiy programs install
  1121. their own input handlers, and it may be necessary to use the priorities to
  1122. adjust the sequence in which these get to see the input events.  Too many
  1123. programers have used priority 51 (inlcuding the author), and have hard-coded
  1124. the priority into their programs.  It is time that this begins to change.
  1125.  
  1126. Examples:
  1127.  
  1128.     HANDLER_PRIORITY:   51      ; the default
  1129.     HANDLER_PRIORITY:   53      ; a little bit earlier in the input chain
  1130.  
  1131.  
  1132. HOW WICONIFY WORKS:
  1133.  
  1134. wIconify is made up of five distinct parts:  an Input.Device input handler,
  1135. the traps to the Intuition routines, an AmigaDOS process, the loader, and the
  1136. programmer's interface.  Each of these operates within different process
  1137. contexts, which makes for extremely delicate and complex interaction among
  1138. these components.
  1139.  
  1140. The Input.Device handler is the smallest piece.  Its job is to search the
  1141. input chain for left-right mouse clicks (or whatever key is specified as the
  1142. iconify key), remove them and inform the handler process about them.  In the
  1143. same way, it looks for the wIconify activation key (SHIFT F1) and activates
  1144. the wIconify backdrop window when found.  Finally, the handler also checks
  1145. to make sure that iconified windows and screens do not become activated
  1146. accidentally (input events should only go to non-iconified windows).
  1147.  
  1148. wIconify traps a number of Intuition routines, namely OpenWindow(),
  1149. CloseWindow(), OpenScreen() and CloseScreen().  The OpenWindow() trap checks
  1150. to see if the window should be opened on a different screen, and if so,
  1151. check whether it needs to be resized before it attempts to open the window. 
  1152. It also maintains the data required to tell when all the "foreign" windows
  1153. have been removed from a screen.  Finally, it looks for the Workbench window
  1154. opened by LoadWB and modifies it to include standard border gadgets, etc.
  1155. The CloseWindow() trap checks to see if the window has an icon, and if so
  1156. requests the handler process to remove the icon.  If the window is on a 
  1157. "foreign" screen, it updates the data needed to determine when it is safe to
  1158. close a shared screen, and if the screen is waiting to close, it may signal
  1159. that it is OK to be closed.
  1160.  
  1161. The OpenScreen() trap checks if the newly-created screen is one that it is
  1162. supposed to ignore, and if not, it tries to open the wIconify backdrop
  1163. window on the screen.  The CloseScreen() trap first attempts to remove any
  1164. icons that it can from the screen, then it waits for any "foreign" windows
  1165. to be closed and any icons to be removed by the user.  Finally, it closes
  1166. the wIconify backdrop window and closes the screen.
  1167.  
  1168. wIconify also traps a number of other routines, specifically,
  1169. WindowToFront(), WindowToBack(), and ActivateWindow().  These traps check
  1170. that the window being specified is not and iconified window.  This prevents
  1171. iconified window from reappearing or becoming activated accidentally.
  1172. Finally, wIconify traps the wSetWindowTitles() routine in order to update
  1173. the name of an icon if its window title changes.
  1174.  
  1175. Finally, wIconify traps AutoRequest(), BuildSysRequest() and FreeSysRequest().
  1176. These routines open (or close) windows, but since they are part of the
  1177. Intuition library itself, and since Intuition does not call its own vector
  1178. table, these rooutines bypass the traps that wIconify has installed in
  1179. OpenWindow() and CloseWindow().  In order to properly handle the windows
  1180. created for System Requests, wIconify also must trap these routines.  In
  1181. BuildSysRequest(), the windows are handled almost exactly as normal windows
  1182. are, except that if the calling task is a Process and that process has an
  1183. error window defined (by wSetSysRequest, for example), then the window will
  1184. be opened on the screen containing that window regardless of the settings in
  1185. the OPEN_ON menu.
  1186.  
  1187. Window opened by BuildSysRequest() are new fully supported by wIconify: 
  1188. they can be iconified and manipulated as usual, their icons will be removed
  1189. when they close, and their presence on a "foreign" screen will prevent that
  1190. screen from closing before the system request is completed.
  1191.  
  1192. The AutoRequest() routine presents more of a challange, since it does not
  1193. return control until after the system request window has been completed.
  1194. Thus wIconify never gets the chance to manipulate the window it creates,
  1195. either to move it to another screen, or to maintain the internal data
  1196. required for an icon.  For this reason, the AutoRequest() routine has been
  1197. completely replaced by an equivalent routine.  This routine calls (the
  1198. modified) BuildSysRequest(), and then waits for the user to complete the
  1199. request.  The action of the AutoRequest() routine is well-documented in the
  1200. Intuition manual, so this replacement should be indistinguishable from the
  1201. original under normal circumstances.
  1202.  
  1203. All these traps run in the context of the process or task that calls the
  1204. trapped routine, not in the context of the wIconify handler process, so 
  1205. they do not manipulate the linked lists of icons directly.  Rather, they
  1206. communicate with the wIconify handler process via Exec messages.
  1207.  
  1208. The main handler process is the central component of wIconify, and it has a
  1209. number of jobs.  First, it is in charge of maintaining the linked lists
  1210. of icons, screens, windows, etc. that are used by wIconify.  Since the
  1211. different parts of wIconify all run asynchronously under different process
  1212. contexts, the lists could get seriously tangled if more than one process
  1213. were trying to modify them at once.  For this reason, the handler process is
  1214. the only one that adjusts the icon lists (although the screen and window
  1215. lists are maintained by the trap routines).  The handler responds to
  1216. requests from the Input.Device handler and the Intuition Trap routines to
  1217. add or remove icons.  This includes the actual "removal" and restoration of
  1218. windows and screens as they are iconified.
  1219.  
  1220. The second job of the handler is to manage the wIconify backdrop windows and
  1221. the Intuition events associated with them.  This involves the actual drawing
  1222. of the icons as well as processing the mouse clicks and moves that cause
  1223. icons to be selected, dragged, and opened.  It also includes responding to
  1224. all menu selections, and updating the menu items as needed.  This includes
  1225. opening and closing new screens, and starting NewCLI processes.
  1226.  
  1227. Finally, the handler also responds to requests from other programs that use
  1228. the wIconify programmer's interface to manage their own icons.  This
  1229. includes adding, removing, and selecting icons, iconifying and restoring
  1230. windows and screens, and looking up information about icons.  See the
  1231. wIconify programmer's interface documentation for more information.
  1232.  
  1233. The loader is the portion of wIconify that is actually named "wIconify"
  1234. (the Input.Device handler, Intuition traps, and handler process all are
  1235. encapsulated in the "wIconify-Handler").  Its job is to load the handler
  1236. code into memory and set up the data needed by the different components of
  1237. the handler, install the traps and Input.Device handler, and start the
  1238. handler process itself.  A major portion of this job is to read and process
  1239. the intialization file and report any errors with it.  If the loader detects
  1240. that the handler already is loaded, then the loader signals the handler that
  1241. it should attempt to quit running.  When the handler responds that it is
  1242. done, the loader will remove the traps and input handler, and then remove
  1243. the handler process from memory.
  1244.  
  1245. Although the handler is over 30K in size, it has been streamlined as much as
  1246. possible.  In particular, any non-essential functions have been moved to the
  1247. loader.  Thus all the initialization and run-down code is in the loader not
  1248. the handler.  In fact, the handler process can not end on its own; it
  1249. requires the loader to help it out.  When you choose the END item in the
  1250. ICON menu, the handler process attempts to Execute() the wIconify command
  1251. as a separate process just as though you typed wIconify again yourself.
  1252. See ENDING WICONIFY for more details.
  1253.  
  1254. In order to iconify windows, wIconify turns them into BACKDROP windows and
  1255. then sends them to the back.  They fall behind the wIconify backdrop window
  1256. where they can no longer be seen, which makes them seem to disappear.  This
  1257. has some serious implications concerning memory usage; see WICONIFY AND
  1258. SMART_REFRESH WINDOWS above for more details.
  1259.  
  1260. To iconify screens, wIconify simply moves them below the visible area of the
  1261. display; thus they seem to disappear.  The legality of this is not strictly
  1262. clear.  It is not prohibited by the Intuition guide, but it may cause
  1263. unforeseen problems.
  1264.  
  1265. Note that in both cases, the screens and windows are not actually removed. 
  1266. They still exist and are usable by the programs that created them.  Every
  1267. effort was made to prevent iconified windows from becoming activated or
  1268. depth-arranged accidentally, but the fact that they exist when they appear
  1269. not to may cause some problems with some programs, such as hot-key programs
  1270. that allow you to depth-arrange windows or screens.  For example, these
  1271. programs may not cycle the screens correctly.  wIconify attempts to push
  1272. iconified screens to the back whenever possible, so if your hot-key program
  1273. pulls it to the front, wIconify will immediately push it to the back again.
  1274.  
  1275.  
  1276. ENDING ICONIFY:
  1277.  
  1278. As you can see from the description above, wIconify is a complex system,
  1279. with a variety of connections into the system software and application
  1280. programs.  Shutting down and removing such a system is far from easy. 
  1281. Nevertheless, the author feals that you should be able to remove any peice
  1282. of optional software without having to reboot the machine (apparently the
  1283. authors of the Workbench don't agree), so he has provided the END menu item
  1284. for this purpose.
  1285.  
  1286. Simply selecting END may not end wIconify, however.  A number of conditions
  1287. must be met in order to ensure that wIconify can end safely.  First, the END
  1288. menu item uses the Execute() AmigaDOS routine, which requires the RUN
  1289. command to be in the C: directory (it looks directly into the C: directory,
  1290. bypassing the command path altogether), and it requires that WICONIFY: be
  1291. assigned to the directory where the wIconify program is stored (usually C:
  1292. or the wIconify directory).  Second, all icons must be removed from all
  1293. screens (wIconify will open window icons and remove AUTOREMOVE icons
  1294. automatically when you ask it to END, but icons created by other programs
  1295. may require you to closed them individually before END will operate).
  1296. Third, all "foreign" windows must be removed from shared screens (you must
  1297. close these manually).  Fourth, all wIconify-created screens must be closed
  1298. (wIconify automatically will close any screens that have no windows, but you
  1299. will have to close any windows on wIconify screens before they will be
  1300. closed).  Fifth, wIconify will not end while there are un-replied messages
  1301. associated with the wIconify programmer's interface, or with closing or
  1302. resized windows.  Finally, if the Intuition routines trapped by wIconify
  1303. have been re-trapped by some other program, wIconify may not be able to
  1304. restore its own traps, hence will not end.
  1305.  
  1306. The last two of these are particularly hard to detect.  In both cases, it
  1307. will appear that wIconify has ended (there will be no more visible signs of
  1308. its operation), but the process will still be running and the memory in use
  1309. by it will not be freed.  Furthermore, there is virtually nothing you can do
  1310. about un-replied messages; if a program fails to reply to a message, there is
  1311. no way for you to get around this, but it would be unsafe for wIconify to
  1312. end without waiting for all its messages to be returned. 
  1313.  
  1314. The problem with the traps is a design flaw with the SetFunction() mechanism: 
  1315. the programs that use SetFunction() must be removed in the opposite order from
  1316. which they were started.  Fortunately, there is a solution.  The author of
  1317. wIconify also wrote a program called PatchSetFunction which makes it possible
  1318. to add and remove traps in any order.  He strongly recommends that you use
  1319. this program, especially if you have lots of system-modifying programs like
  1320. wIconify.  The program can be obtained from the author.
  1321.  
  1322. The other conditions can be met simply by closing windows or icons, and by
  1323. providing the proper directory name assignments.
  1324.  
  1325. This all probably seems pretty complicated just to end a program, but the
  1326. author wishes to be as safe as possible.  Despite this effort, however,
  1327. there are still possible places where problems can occur.  In general, if
  1328. you are not using any programs that use the programmer's interface, you are
  1329. probably safe in ending wIconify at any time.  If you use programs that
  1330. supply their own icons (particulary icons with no windows attached), it is
  1331. best if you end these programs first before attempting to end wIconify.
  1332.  
  1333. If wIconify fails to end (one of the above conditions is not met), then
  1334. wIconify may be left in "limbo".  When wIconify is trying to end, it will
  1335. not allow new windows to become iconified, and may not open new screens, etc.
  1336. This is a particularly delicate time for wIconify (many unforeseen
  1337. conditions can occur internally during this phase), so you should try to
  1338. minimize it, when possible, by closing windows, screens and icons BEFORE
  1339. requesting wIconify to end.
  1340.  
  1341. Once all the conditions are met, wIconify will end on its own (there is no
  1342. need to request it to end again).
  1343.  
  1344. If you used the wIconify command to end iconify (rather than the END menu)
  1345. the wIconify command will not complete until the handler has ended.  If you
  1346. feel that the handler will not be able to end, you can cancel wIconify by
  1347. pressing CTRL-C.  DO THIS ONLY AS A LAST RESORT, however, since if the handler
  1348. is able to end, there will be no loader ready to clean up after it!
  1349. At this point, issuing another wIconify command will cause the handler to go
  1350. through its shut-down process again, although if it didn't succeed the first
  1351. time, it probably won't do so now.
  1352.  
  1353. When you use the END menu item to end wIconify, the handler actually
  1354. executes the loader as a separate process via the Execute() routine.  If
  1355. wIconify fails to end properly (for one of the reasons above), this process
  1356. will still be waiting for it to end.  Selecting END again will cause
  1357. additional processes to be started.  You can use the STATUS command to see
  1358. if any of these are still active, and if so, you can use the BREAK command
  1359. to send a CTRL-C to those processes if you want to remove them.  See the
  1360. AmigaDOS manual for information on the STATUS and BREAK commands.
  1361.  
  1362.  
  1363. WICONIFY AND THE STARTUP SEQUENCE:
  1364.  
  1365. wIconify usually should be part of your startup sequence, and its position
  1366. within the startup-sequence file is important.  If you are using
  1367. wIconSetter, you should put the wIconify command early in the sequence
  1368. (before too many windows are open) and the wIconSetter command immediately
  1369. after it.  If you want wIconify to work properly with the Workbench window
  1370. (see HOW WICONIFY WORKS above), you should put the LoadWB command after the
  1371. wIconify command.
  1372.  
  1373. A number of other programs also have interactions with wIconify that may be
  1374. dependent on the order in which they are installed relative to wIconify. 
  1375. See INTERACTIONS WITH OTHER PROGRAMS below for more details.
  1376.  
  1377. Once wIconify is installed, there are a number of utilitiy programs that may
  1378. be useful in your startup sequence.  For example, you may want to have a new
  1379. wIconify screen opened as your Amiga boots up, and use this screen as an
  1380. additional Workbench screen on which you open utility programs that you use
  1381. often, or you may want to start some programs and have their windows be
  1382. iconified during the boot process.
  1383.  
  1384. Both these functions can be performed by the wIconify utility programs. 
  1385. These include:
  1386.  
  1387.     wIconScreen         Opens a new wIconify screen
  1388.  
  1389.     wIconifyWindow      Iconifies a window (and allows you to specify
  1390.                         the icon's position and icon flags)
  1391.  
  1392.     wIconifyScreen      Iconifies a screen (and allows you to specify
  1393.                         the icon's position and icon flags)
  1394.  
  1395.     wMakeWB             Selects a screen as the current WB screen
  1396.  
  1397.     wOpenOn             Sets the OPEN WINDOWS submenu selections
  1398.  
  1399.     ScreenToFront       Depth arrange screens
  1400.     ScreenToBack
  1401.  
  1402. Each of these is documented sepearately; see these documents for complete
  1403. details on how to use these programs.
  1404.  
  1405. If you plan to open extra Workbench screens where you will open many
  1406. utilitiy programs during boot-up, you may want to consider changing the
  1407. default OPEN_WINDOW setting to CURRENT_WB; then, create the screen using the
  1408. wIconScreen command (the screen will not be activated, but will be the
  1409. current WB screen, so new windows will open there); then open the utilities
  1410. you want; finally, use wOpenOn to change the OPEN_WINDOWS menu back to
  1411. ACTIVE_SCREEN.  For example:
  1412.  
  1413.     wOpenOn CURRENT_WB
  1414.     wIconScreen HIRES NOACTIVATE BEHIND
  1415.     ; commands that open windows here
  1416.     wOpenOn ACTIVE_SCREEN
  1417.  
  1418. Once windows are open, you can use wIconifyWindow to iconify them during the
  1419. startup sequence, so your work area can be nice and clean as soon as your
  1420. machine boots up.  (You can also use the AUTOICONIFY flag within wIconSetter
  1421. to cause windows to iconify as soon as they open, but this will stay in
  1422. effect even after boot-up, so windows may iconify themselves when you hadn't
  1423. intended them to).
  1424.  
  1425.  
  1426. INTERACTION WITH OTHER PROGRAMS:
  1427.  
  1428.   LoadWB
  1429.  
  1430.     The Workbench opens a backdrop window to hold its disk and file icons. 
  1431.     Since this window is the full size of the screen, it covers up the
  1432.     wIconify backdrop window making it hard to get to the window icons.
  1433.     For this reason, wIconify modifies the Workbench window when it opens
  1434.     so that it is a standard non-backdrop window with drag bar, depth gadgets
  1435.     and sizing gadget.  In order for this to happen, however, you must install
  1436.     wIconify BEFORE you start the Workbench with LoadWB.  See HOW WICONIFY
  1437.     WORKS above for more information.
  1438.  
  1439.   DropCloth
  1440.  
  1441.     DropCloth allows you to add a background picture or shading pattern to
  1442.     your Workbench window.  DropCloth is not very picky about the window
  1443.     it modifies, however.  In particular, it seems to take the back-most
  1444.     backdrop window.  If wIconify is running, this will be the wIconify window
  1445.     (this is probably what you want since the Workbench window is no longer a
  1446.     backdrop window).  On the other hand, if you have iconified windows, they
  1447.     will be turned into backdrop windows that are behind the wIconify
  1448.     backdrop, so in this case, DropCloth will add its picture or shading to
  1449.     the last iconified window (if any).  Thus you can have DropCloth do its
  1450.     magic to ANY window simply by iconifying it just before running DropCloth.
  1451.     If you want to remove DropCloth from such a window, be sure to iconify it
  1452.     again first.
  1453.  
  1454.   Less
  1455.  
  1456.     Less is a program like More, with additional features.  It does not 
  1457.     behave very well, however (it does not respond to sizing its window,
  1458.     for example).  This program attempts to open a large window to see if
  1459.     the screen is interlaced, and if the OpenWindow() call fails, it
  1460.     opens a smaller window for non-interlaced screens.  If you have set
  1461.     the SIZE TO FIT option in the OPEN WINDOW submenu, however, wIconify
  1462.     will modify the initial window size to fit the screen, and Less will
  1463.     think the screen is interlaced.  It will miscalculate the size of the
  1464.     window and hence the number of lines that can fit in the window.
  1465.     For programs like this, you should disable the SIZE TO FIT option.
  1466.  
  1467.   QMouse
  1468.   
  1469.     QMouse is a small utilitity that incorporates a mouse accellerator, a
  1470.     menu clock, click-to-front, and a hole lot of other useful features, all
  1471.     in one small package.  Unfortunately, it seems that, in order to make
  1472.     it as small as possible, QMouse does not always do everything "legally".
  1473.     In particular, it does not seem to allocate the timer device correctly
  1474.     (it does not even contain the name of the timer device in its executable).
  1475.     For this reason, if you use QMouse, wIconClock will not be able to get
  1476.     access to the timer (in fact, its attempt to allocate the timer never
  1477.     seems to complete).  If you install wIconClock BEFORE you start QMouse,
  1478.     however, everything seems to work OK.  It may not be completely
  1479.     bugless, however.
  1480.  
  1481.   Screen and window hot-key programs
  1482.  
  1483.     These are programs that allow you to depth-arrange screens and windows 
  1484.     via hot-keys.  Since wIconify does not actually remove windows when they
  1485.     are iconified (it only hides them), such programs may try to depth-arrange
  1486.     iconified windows.  wIconify tries very hard to prevent this, but the
  1487.     result is that your hot-key program may not do exactly what you think it
  1488.     should, due to the presence of unexpected backdrop windows.
  1489.     
  1490.     Similary, screens are not removed, just hidden, and their presence may
  1491.     confuse hot-key screen flippers as well.  wIconify is designed to favor
  1492.     programs that allow you to move the front screen to the back, but will
  1493.     probably disrupt programs that allow you to bring the back screen forward:
  1494.     wIconify pushes iconified screens to the back, so if they are moved to the
  1495.     front, wIconify will just send them to the back again.  You will never 
  1496.     even see the screen come forward (since it is iconified), and the result
  1497.     will be that your screen-flipper appears to do nothing at all.
  1498.  
  1499.   Programs that write directly to the screen's RastPort
  1500.   
  1501.     The intuition guide suggests that programs always use a backdrop window
  1502.     for graphics rendering rather than go directly to the screen's RastPort.
  1503.     Unfortunately, some programs break this rule.  You may wish to have
  1504.     wIconify not open its backdrop window on such screens.  To do so, use
  1505.     the initialization file and the IGNORE_SCREEN command to specify the
  1506.     screens to be ignored.
  1507.  
  1508.   Programs that use Sprites:
  1509.  
  1510.     Some programs use the hardware sprites, which always appear above anything 
  1511.     else on the screen (the mouse pointer is a sprite).  When these windows
  1512.     are iconified, the sprites will still appear in front of everything,
  1513.     which may be a bit confusing if they are supposed to look like part of
  1514.     the window.
  1515.     
  1516.     Also, if you open new "foreign" windows on a screen that is using
  1517.     sprites, the sprites may appear on top of the new windows.  This may
  1518.     be confusing if they are supposed to look like part of another window.
  1519.  
  1520.  
  1521. WHEN WICONIFY CAN FAIL:
  1522.  
  1523. In addition to the interactions described in the section above, there are
  1524. some additional situations that can cause confusing results:
  1525.  
  1526.  
  1527. A Window's Icon Appears but the Window Does Not Disappear:
  1528.  
  1529. This can happen when you are attempting to iconify a SMART_REFRESH window
  1530. when there is very little CHIP memory left.  Low memory conditions are very
  1531. touchy, and you should try to free up some memory right away, chances are
  1532. the system is about to crash due to a lack of memory.  If it survives, you
  1533. should open the window's icon (even though the window is still visible). 
  1534. This is because wIconify has modified the window and attempted to send it to
  1535. the back, but Intution did not have enough memory to save the window's
  1536. contents off-screen.  There is no way for wIconify to know this, however,
  1537. since WindowToBack() does not return a success status.  Once you have freed
  1538. up some memory, try iconifying the window again.
  1539.  
  1540.  
  1541. A Window's Icon Disappers but the Window Does Not Reappear:
  1542.  
  1543. As with the problem above, this can be caused by very low CHIP memory
  1544. conditions.  What has happened in this case is that wIconify has attempted
  1545. to bring the window to the front, but there is not enough memory for
  1546. Intuition to save the parts of the windows that will become obscured. 
  1547. wIconify has no way to determine this, however, so it removes the window's
  1548. icon, thinking that the window has appeared.  At this point, the window is
  1549. inaccessible as it is still behind the wIcoinfy backdrop window.  There is a
  1550. utility program called wIconVerify that will find any "lost windows" of this
  1551. type.  See the documentation for wIconVerify for more details.
  1552.  
  1553.  
  1554. Selecting the END Menu Item Doesn't Seem to End wIconify:
  1555.  
  1556. Ending wIconify is a more complex operation than you might at first think
  1557. (see ENDING WICONIFY above for complete details).  There are a number of
  1558. reasons wIconify can fail to end when you ask it to:
  1559.  
  1560.     The RUN command may not be in the C: directory, or the C: directory
  1561.     is on an unmounted disk (AmigaDOS goes directly to C:, bypassing the
  1562.     path, so wIconify must have access to C: in order for END to work).
  1563.     
  1564.     The WICONIFY: directory has not been assigned via the ASSIGN command
  1565.     (see INSTALLING AND REMOVING WICONIFY above for details).
  1566.  
  1567.     There are screens with non-window icons on them that can not be 
  1568.     removed automatically (this can only be true if you are using programs
  1569.     that take advantage of wIconify's programmer's interface).
  1570.  
  1571.     There are windows open on shared screens other than the workbench.
  1572.     
  1573.     There are wIconify screens open with windows on them.
  1574.  
  1575.     There are un-replied messages held by programs using the programmer's
  1576.     interface, or due to attempts to close windows associated with icons.
  1577.  
  1578.  
  1579. Can't Create a NewCLI:
  1580.  
  1581. In order to create a new CLI, wIconify must have access to the RUN command
  1582. in the C: directory (being in the command path is not good enough).  It
  1583. must also have access to the NEWSHELL command, or whatever command you 
  1584. specified in the initialization file.  The NewCLI also may fail if the
  1585. syntax of the command you specified is incorrect, the command can't be
  1586. found, or if the files required by it can not be found, or if the command
  1587. you specified fails in any way.  Note that the current directory and 
  1588. command path are NOT preserved when starting new CLIs, so you may need to
  1589. do a CD or PATH command as part of the command executed (see NEWCLI'S
  1590. CREATED BY WICONIFY above for more details).
  1591.  
  1592.  
  1593. CLI has Trouble Finding Commands:
  1594.  
  1595. This is probably due to the fact that the new CLI does not inherit the
  1596. current directory or command path.  You can either specify complete path
  1597. names for the commands and files in the new CLI command, or you can
  1598. create a file containing CD, PATH and any other commands you want
  1599. performed, and have the New CLI command as EXECUTE this file.  See
  1600. NEWCLIS'S CREATED BY WICONIFY above for more detail.
  1601.  
  1602.  
  1603. wIconify Crashes with Some Programs:
  1604.  
  1605. wIconify has very complex interactions with Intuition and the system
  1606. as a whole.  Some programs may make assumptions about the system setup or
  1607. their screens that are no longer valid when wIconify is running.  It is even
  1608. possible that such programs will crash if wIconify is running.  If so, you
  1609. may want to use the initialization file and the IGNORE_SCREEN command to
  1610. prevent wIconify from modifying the screens used by such programs.  
  1611.  
  1612.  
  1613. A Program Thinks its Window is Larger than it Really Is:
  1614.  
  1615. If the SIZE_TO_FIT item is checked in the OPEN_WINDOWS submenu, then
  1616. wIconify will resize windows when they open so that they fit onto the screen
  1617. where they open.  wIconify sends such programs a NEWSIZE IntuiMessage, but
  1618. not all programs are well-behaved in processing this change of size.  If you
  1619. have such a program, you may need to disable the SIZE_TO_FIT menu in order
  1620. to get it to work correctly with wIconify.
  1621.  
  1622.  
  1623. FUTURE ENHANCEMENTS:
  1624.  
  1625. The author feels that wIconify is pretty much complete at this point, and
  1626. that there is not too much more to be done with it.  If you have bugs or
  1627. suggestions to make, however, he would be more than happy to hear about them.
  1628.  
  1629.  
  1630. AUTHOR:
  1631.  
  1632. wIconify and its compaion utilities
  1633. Copyright (c) 1990,1991 by Davide P. Cervone, all rights reserved.
  1634.  
  1635. They were developed on 512K Amiga 1000 using Lattice C v4.0 and will
  1636. undoubtedly need some re-writting to work with Manx Aztec C.
  1637.  
  1638. Davide P. Cervone
  1639. Department of Mathematics
  1640. Brown University
  1641. Providence, Rhode Island  02912
  1642. ST402523@BROWNVM
  1643. st402523@brownvm.brown.edu
  1644.